.NET Remoting Example for C#Builder - Remote Boss
-------------------------------------------------
.NET Remoting allows you to build distributed applications, allowing client applications to use objects in other processes on the same computer or on other computers over the network.

This example demonstrates sending and returning objects by implementing a remote-control application called "Remote Boss". The server application is deployed to each "worker" PC. The "boss" runs the client and can pop up messages on the workers screen, run an application on their PC, and capture their screen to see what the worker is doing.

Development topics demonstrated in this example include:
1) Creating and registering a remoting channel using TCP.
2) Getting an object instance using remoting.
3) Passing and returning objects via remoting.
4) Using notifyIcon to hide the server application in the notify area (system tray).
5) Capturing the screen image in PNG format and packaging it for remoting.
6) Making a large PictureBox scrollable by placing it within a Panel.
7) Using a thread-safe list of strings.
8) Importing Win32 API unmanaged DLL functions.
9) Starting an external process with command line arguments.

Compiling
---------
Open the project group file Remoting.bdsgroup and then select Project, Build All Projects.

Running
-------
Run RemotingServer.exe on the "worker" PC.
Run RemotingClient.exe on the "boss" PC.
From the client enter the worker PC host (default is localhost - assumes that server is on the same PC as the client) and click the Connect button.
From the client you can enter and send popup messages, run a process, or capture the servers screen. Note the use of running IExplore.exe to "push" a web page to the worker.

NOTE: The example uses TCP port 3999 for the remoting. If that port doesn't suit you then you can change it in the source code of FormClient.cs and FormServer.cs. You can also use HTTP instead of TCP. TCP is faster however HTTP is the preferred method for remoting across the Internet as it is more readily accessible through firewalls.

Jarrod Hollingworth
http://www.csharpbuilder.info
